package br.ucb.cesbdao.model.impl;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;

import lombok.Getter;
import lombok.Setter;

import org.apache.log4j.Logger;

import br.ucb.cesbdao.model.TipoAtendimentoDoAtendimentoModel;
import br.ucb.cesbdao.persistencia.dao.TipoAtendimentoDoAtendimentoDAO;
import br.ucb.cesbdao.persistencia.factory.FactoryConnection;
import br.ucb.cesbdao.persistencia.factory.FactoryDAO;
import br.ucb.cesbdao.relatoriosDTO.TipoAtendeDTO;
import br.ucb.cesbdao.servicos.Servicos;

public class TipoAtendimentoDoAtendimentoModelImpl implements TipoAtendimentoDoAtendimentoModel{

	private Logger logger = Servicos.carregaLog(TipoAtendimentoDoAtendimentoModelImpl.class);
	@Getter @Setter
	private TipoAtendimentoDoAtendimentoDAO dao;

	public TipoAtendimentoDoAtendimentoModelImpl() {
	}

	@Override
	public void DellByIdAtendimento(int idAtendimento) {
		try {
			setDao(FactoryDAO.getDaoTipoAtendimentoDoAtendimento(FactoryConnection.getInstance().criaConexao()));
			getDao().DellByIdAtendimento(idAtendimento);
		} catch (ClassNotFoundException | SQLException e) {
			logger.error(e.getMessage());
			e.printStackTrace();
		} finally {
			FactoryConnection.getInstance().closeConexao(getDao().getConexao());
		}
	}

	@Override
	public void add(int idAtendimento, int idTipoAtende) {
		try {
			setDao(FactoryDAO.getDaoTipoAtendimentoDoAtendimento(FactoryConnection.getInstance().criaConexao()));
			getDao().add(idAtendimento, idTipoAtende);
		} catch (ClassNotFoundException | SQLException e) {
			logger.error(e.getMessage());
			e.printStackTrace();
		} finally {
			FactoryConnection.getInstance().closeConexao(getDao().getConexao());
		}
	}

	@Override
	public boolean getByIdAtend_idTipo(int idAtendimento, int idTipoAtende) {
		try {
			setDao(FactoryDAO.getDaoTipoAtendimentoDoAtendimento(FactoryConnection.getInstance().criaConexao()));
			return getDao().getByIdAtend_idTipo(idAtendimento, idTipoAtende);
		} catch (ClassNotFoundException | SQLException e) {
			logger.error(e.getMessage());
			e.printStackTrace();
		} finally {
			FactoryConnection.getInstance().closeConexao(getDao().getConexao());
		}
		return false;
	}

	@Override
	public void dell(int idAtendimento, int idTipoAtende) {
		try {
			setDao(FactoryDAO.getDaoTipoAtendimentoDoAtendimento(FactoryConnection.getInstance().criaConexao()));
			getDao().dell(idAtendimento, idTipoAtende);
		} catch (ClassNotFoundException | SQLException e) {
			logger.error(e.getMessage());
			e.printStackTrace();
		} finally {
			FactoryConnection.getInstance().closeConexao(getDao().getConexao());
		}
	}

	@Override
	public void DellByIdTipo(int idTipoAtende) {
		try {
			setDao(FactoryDAO.getDaoTipoAtendimentoDoAtendimento(FactoryConnection.getInstance().criaConexao()));
			getDao().DellByIdTipo(idTipoAtende);
		} catch (ClassNotFoundException | SQLException e) {
			logger.error(e.getMessage());
			e.printStackTrace();
		} finally {
			FactoryConnection.getInstance().closeConexao(getDao().getConexao());
		}
	}

	@Override
	public ArrayList<TipoAtendeDTO> getByPeriodo(Date dataInicio, Date dataFim) {
		try {
			setDao(FactoryDAO.getDaoTipoAtendimentoDoAtendimento(FactoryConnection.getInstance().criaConexao()));
			return getDao().getByPeriodo(dataInicio, dataFim);
		} catch (ClassNotFoundException | SQLException e) {
			logger.error(e.getMessage());
			e.printStackTrace();
		} finally {
			FactoryConnection.getInstance().closeConexao(getDao().getConexao());
		}
		return null;
	}
}
